import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class demo {

//    美国节日▲▲▲
//和中国的节日不同，美国的节假日通常是选择某个月的第几个星期几这种形式，因此每一年的放假日期都不相同。具体规则如下：
//* 1月1日：元旦
//* 1月的第三个星期一：马丁·路德·金纪念日
//* 2月的第三个星期一：总统节
//* 5月的最后一个星期一：阵亡将士纪念日
//* 7月4日：美国国庆
//* 9月的第一个星期一：劳动节
//* 11月的第四个星期四：感恩节
//* 12月25日：圣诞节
//现在给出一个年份，请你帮忙生成当年节日的日期。
//    输入描述:
//输入包含多组数据，每组数据包含一个正整数year（2000≤year≤9999）。
//    输出描述:
//对应每一组数据，以“YYYY-MM-DD”格式输出当年所有的节日日期，每个日期占一行。
//每组数据之后输出一个空行作为分隔。




    // 判断是否是闰年
    public static boolean isLeapYear(int n) {
        return n%400==0 || (n%4==0 && n%100!=0);
    }


    private static final int[] DAYS = {31,28,31,30,31,30,31,31,30,31,30,31};
    // 给定年月日 判断该年过了多少天
    public static int nDay(int y, int m, int d) {
        int nday = d;
        for(int i=0; i<m-1; i++) {
            nday += DAYS[i];
        }
        if(m>2 && isLeapYear(y)) {
            nday++;
        }
        return nday;
    }

    // 给出年月日 (基准年星期日)公元前 1年12月31日  就是0000-12-31
    // 与这相比 求出当天是星期几
    // 先求7的同余数  然后再判断是星期几
    public static int week(int y, int m, int d) {
        // 天数 = 经过的年份+该年过了多少天+(用集合找出公式)过了多少个闰年*1
        // 多少个闰年(整年的)通过:集合可得公式 (y-1)/4-(y-1)/100+(y-1)/400
        // (y-m-d)-(0000-12-31)=365*(y-1) + nDay(y,m,d) + (y-1)/4-(y-1)/100+(y-1)/400
        // 经过的年份: 365*(y-1) = (364+1)*(y-1) 因为364%7==0;
        // (y-m-d)-(0000-12-31)=(y-1) + nDay(y,m,d) + (y-1)/4-(y-1)/100+(y-1)/400
        int day = y-1 + nDay(y, m, d) + (y-1)/4-(y-1)/100+(y-1)/400;
        if(day%7 == 0) {
            return 7;
        }
        return day%7;
    }

    // 根据 1 日星期 w，求第 n 个星期 e     是几号
    public static int m1(int w, int n, int e) {
        return (n-1)*7 + (7-w+e)%7+1;
    }

    // 5月的最后一个星期一：求6月1号星期几往前推
    public static int m2(int w) {
        return 25+(7-w+1)%7;
    }

    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int year = in.nextInt();
            // * 1月1日：元旦
            System.out.printf("%d-01-01\n", year);

            // * 1月的第三个星期一：马丁·路德·金纪念日
            int w = week(year,1,1);
            int day = m1(w, 3, 1);
            System.out.printf("%d-01-%d\n", year, day);

            // * 2月的第三个星期一：总统节
            w = week(year, 2, 1);
            day = m1(w, 3, 1);
            System.out.printf("%d-02-%d\n", year, day);
            // * 5月的最后一个星期一：阵亡将士纪念日
            w = week(year, 6, 1);
            day = m2(w);
            System.out.printf("%d-05-%d\n", year, day);
            // * 7月4日：美国国庆
            System.out.printf("%d-07-04\n", year);
            // * 9月的第一个星期一：劳动节
            w = week(year, 9, 1);
            day = m1(w, 1, 1);
            System.out.printf("%d-09-%02d\n", year, day);
            // * 11月的第四个星期四：感恩节
            w = week(year, 11, 1);
            day = m1(w, 4, 4);
            System.out.printf("%d-11-%d\n", year, day);
            // * 12月25日：圣诞节
            System.out.printf("%d-12-25\n", year);
        }
    }






//    分解因数▲▲▲
//      通过String.join()将链表的value通过" * "连接

//所谓因子分解，就是把给定的正整数a，分解成若干个素数的乘积，即 a = a1 × a2 × a3 × ... × an,并且 1 < a1 ≤ a2 ≤ a3 ≤ ... ≤ an。
// 其中a1、a2、...、an均为素数。 先给出一个整数a，请输出分解后的因子。
//    输入:10<br/>18
//    输出:10 = 2 * 5<br/>18 = 2 * 3 * 3

    //    求因子
    public static List<String> fact(int n) {
        List<String> list = new ArrayList<>();
        for(int i=2; i<=Math.sqrt(n); i++) {
            while(n%i == 0) {
                n = n/i;
                list.add(String.valueOf(i));
            }
        }
//        如果n是素数 那么就等于他本身
        if(n != 1) {
            list.add(String.valueOf(n));
        }
        return list;
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int n = in.nextInt();
            List<String> list = fact(n);
            System.out.printf("%d = %s\n", n, String.join(" * ", list));
        }
    }
}
